package com.znyj.cloud.chain.controller;

import com.alibaba.fastjson.JSONObject;
import com.znyj.cloud.chain.dispatch.annotation.Executor;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.sql.Timestamp;

/**
 * Created by gaoliwei on 15-3-13.
 */

@Executor
@Component
public class LocalController {
//    private static final Logger logger = Logger.getLogger(LocalController.class);
//
//    @Resource
//    private ControlTaskMapping controlTaskMapping;
//
//    @Resource
//    private UpTaskMapping upTaskMapping;
//
//    @Resource
//    private CdbCtrlSendExecutorService cdbCtrlSendExecutorService;
//
//
//
//    @UrlDispatcherMapping("/tcp/up/task")
//    public void addup(ChannelHandlerContext ctx, HttpRequest msg) {
//
//        String deviceId = "0";
//        long orderId = 0;
//        String userId = "";
//        String upMsg = "";
//        JSONObject responseJson = new JSONObject();
//
//        //对http请求进行解析
//        try {
//            userId = (HttpUtil.getOneParam(msg, "userId"));
//            orderId = AtomicValues.incOrderId();
//            deviceId = HttpUtil.getOneParam(msg, "deviceId");
//            upMsg = (HttpUtil.getOneParam(msg, "upMsg"));
//            if (CheckUtil.checkIsNotNull(userId) && CheckUtil.checkIsNotNull(orderId) && CheckUtil.checkIsNotNull(deviceId) && CheckUtil.checkIsNotNull(upMsg)) {
//                //解析有数据
//            } else {
//                logger.error("/tcp/up/task msg param is wrong!");
//                responseJson.put("deviceId", deviceId);
//                responseJson.put("orderId", orderId);
//                responseJson.put("status", "nullMsg");
//                ControllerUtil.failResponse(responseJson, ctx);
//                return;
//            }
//        } catch (Exception e) {
//            logger.error("/tcp/up/task param is wrong!" + msg);
//            responseJson.put("deviceId", deviceId);
//            responseJson.put("orderId", orderId);
//            responseJson.put("status", "valueError");
//            ControllerUtil.failResponse(responseJson, ctx);
//            return;
//        }
//
//        CdbUpSendPackage cdbUpSendPackage = new CdbUpSendPackage(userId,deviceId,orderId,upMsg,0);
//        logger.info(JSONObject.toJSONString(cdbUpSendPackage));
//
//        //检查deviceId是否在线
//        ChannelHandlerContext channelHandlerContext = OnlineDeviceInfoMapping.getChannel(deviceId);//从deviceid获取ctx
//        if (null == channelHandlerContext) {
//            responseJson.put("deviceId", deviceId);
//            responseJson.put("orderId", orderId);
//            responseJson.put("status", "deviceOffline");
//            ControllerUtil.failResponse(responseJson, ctx);
//            logger.error("/tcp/up/task deviceId not online!" + msg);
//            return;
//        } else {
//            //如果在线 插入数据库
//            cdbCtrlSendExecutorService.executeUp(cdbUpSendPackage, SysConstant.CDB_OP.INSERT_TASK);
//
//        }
//
//        //发送消息TASK包
//        UpTaskModel upTaskModel = new UpTaskModel(cdbUpSendPackage);
//        //TASK表里添加一个发送任务
//        upTaskMapping.add(deviceId, upTaskModel);
//
//        responseJson.put("deviceId", deviceId);
//        responseJson.put("orderId", orderId);
//        responseJson.put("status", "sendOk");
//        ControllerUtil.defaultSuccessResponse(responseJson, ctx);
//        logger.info("device online get a update device num is:" + deviceId);
//    }
//
//
//    @UrlDispatcherMapping("/tcp/control/task")
//    public void addControl(ChannelHandlerContext ctx, HttpRequest msg) {
//
//        String deviceId = "0";
//        long orderId = 0;
//        String userId = "";
//        String controlMsg = "idle";
//        JSONObject responseJson = new JSONObject();
//        //对http请求进行解析
//        try {
//            userId = (HttpUtil.getOneParam(msg, "userId"));
//            orderId = AtomicValues.incOrderId();
//            deviceId = (HttpUtil.getOneParam(msg, "deviceId"));
//            controlMsg = (HttpUtil.getOneParam(msg, "controlMsg"));
//            if (CheckUtil.checkIsNotNull(userId) && CheckUtil.checkIsNotNull(orderId) && CheckUtil.checkIsNotNull(deviceId) && CheckUtil.checkIsNotNull(controlMsg)) {
//                //解析有数据
//            } else {
//                logger.error("/tcp/control/task msg param is wrong!");
//                responseJson.put("deviceId", deviceId);
//                responseJson.put("orderId", orderId);
//                responseJson.put("status", "nullMsg");
//                ControllerUtil.failResponse(responseJson, ctx);
//                return;
//            }
//        } catch (Exception e) {
//            logger.error("/tcp/control/task param is wrong!" + msg);
//            responseJson.put("deviceId", deviceId);
//            responseJson.put("orderId", orderId);
//            responseJson.put("status", "catchError");
//            ControllerUtil.failResponse(responseJson, ctx);
//            return;
//        }
//
//        //0为发送中、1为已接收
//        CdbCtrlSendPackage cdbCtrlSendPackage = new CdbCtrlSendPackage(userId,deviceId,orderId,controlMsg,0);
//        logger.info(JSONObject.toJSONString(cdbCtrlSendPackage));
//
//        //检查deviceId是否在线
//        ChannelHandlerContext channelHandlerContext = OnlineDeviceInfoMapping.getChannel(deviceId);
//        if (null == channelHandlerContext) {
//            responseJson.put("deviceId", deviceId);
//            responseJson.put("orderId", orderId);
//            responseJson.put("status", "deviceOffline");
//            ControllerUtil.failResponse(responseJson, ctx);
//            logger.error("/tcp/control/task deviceId not online!" + msg);
//            return;
//        } else {
//            //如果在线 插入数据库
//            cdbCtrlSendExecutorService.executeCtrl(cdbCtrlSendPackage, SysConstant.CDB_OP.INSERT_TASK);
//        }
//
//        //发送消息TASK包,TASK表里添加一个发送任务
//        ControlTaskModel controlTaskModel = new ControlTaskModel(cdbCtrlSendPackage);
//        controlTaskMapping.add(deviceId, controlTaskModel);
//
//        responseJson.put("deviceId", deviceId);
//        responseJson.put("orderId", orderId);
//        responseJson.put("status", "sendOk");
//        ControllerUtil.defaultSuccessResponse(responseJson, ctx);
//        logger.info("device online get a control device num is: " + deviceId);
//    }
}
